package com.sita.bike.utils;

import android.app.Activity;
import android.content.Context;
import android.widget.Toast;

import com.sita.bike.R;
import com.sita.bike.support.Constants;
import com.sita.bike.support.GlobalContext;

import retrofit.RetrofitError;
import retrofit.client.Response;
import retrofit.mime.TypedByteArray;

public class RetrofitUtils {
    public static void displayError(RetrofitError e) {
        Context context = GlobalContext.getGlobalContext();
        switch (e.getKind()) {
            case NETWORK:
                Toast.makeText(context, context.getString(R.string.NETWORK), Toast.LENGTH_SHORT).show();
                break;
            case CONVERSION:
                Toast.makeText(context, context.getString(R.string.CONVERSION), Toast.LENGTH_SHORT).show();
                break;
            case HTTP:
                switch (e.getResponse().getStatus()) {
                    case 500:
                        Toast.makeText(context,
                                e.getResponse().getReason() + " ：" + context.getString(R.string.HTTP_500),
                                Toast.LENGTH_SHORT).show();
                        break;
                    case 404:
                        Toast.makeText(context, context.getString(R.string.HTTP_404), Toast.LENGTH_SHORT)
                                .show();
                        break;
                    case 400:
                        Toast.makeText(context, context.getString(R.string.HTTP_400), Toast.LENGTH_SHORT)
                                .show();
                        break;
                    default:
                        Toast.makeText(context, context.getString(R.string.HTTP)
                                + String.valueOf(e.getResponse().getStatus())
                                + e.getResponse().getReason(), Toast.LENGTH_SHORT).show();
                        break;
                }

                break;
            case UNEXPECTED:
                Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
                break;
        }
    }

    public static void displayError(Activity activity, RetrofitError e) {
        Context context = GlobalContext.getGlobalContext();
        switch (e.getKind()) {
//            case NETWORK:
////                Toast.makeText(context, activity.getString(R.string.NETWORK), Toast.LENGTH_SHORT).show();
//                break;
//            case CONVERSION:
//                Toast.makeText(context, activity.getString(R.string.CONVERSION), Toast.LENGTH_SHORT).show();
//                break;
//            case HTTP:
//                switch (e.getResponse().getStatus()) {
//                    case 500:
//                        Toast.makeText(context,
//                                e.getResponse().getReason() + " ：" + activity.getString(R.string.HTTP_500),
//                                Toast.LENGTH_SHORT).show();
//                        break;
//                    case 404:
//                        Toast.makeText(context, activity.getString(R.string.HTTP_404),Toast.LENGTH_SHORT)
//                                .show();
//                        break;
//                    case 400:
//                        Toast.makeText(context, activity.getString(R.string.HTTP_400), Toast.LENGTH_SHORT)
//                                .show();
//                        break;
//                    default:
//                        Toast.makeText(context, activity.getString(R.string.HTTP)
//                                + String.valueOf(e.getResponse().getStatus())
//                                + e.getResponse().getReason(), Toast.LENGTH_SHORT).show();
//                        break;
//                }
//
//                break;
//            case UNEXPECTED:
//                Toast.makeText(activity, e.getMessage(), Toast.LENGTH_SHORT).show();
//                break;
        }
    }

    public static TypedByteArray toTypedByteArray(byte[] payload) {
        return new TypedByteArray(Constants.APPLICATION_OCTET_STREAM_VALUE, payload);
    }

    public static byte[] getByteArrayFromResponse(Response response) {
        TypedByteArray input = (TypedByteArray) response.getBody();
        byte[] bytes = input.getBytes();
        return bytes;
    }
}
